#ifndef GDN_SCENEMANAGER_H
#define GDN_SCENEMANAGER_H

#include <string>
#include <map>
#include <vector>

#include "Scene.h"

namespace gdn
{
	class SceneManager
	{
		public:
			SceneManager();
			~SceneManager();

			void AddScene( const std::string& name, Scene* scene );
			void RemoveScene( const std::string& name );

			bool DoesSceneExist( const std::string& name ) const;
			std::vector< std::string > GetSceneList() const;
			Scene* FindScene( const std::string& name ) const;

			void SetActiveScene( const std::string& name );
			const std::string& GetActiveSceneName() const;

		protected:
			std::map< std::string, Scene* > scenes;
			std::pair< std::string, Scene* > active;

			std::map< std::string, Scene* >::const_iterator FindSceneIterator( const std::string& name ) const;
	};
}

#endif // GDN_SCENEMANAGER_H
